package br.com.leilao.config;

import java.util.ArrayList;
import java.util.Date;

import br.com.leilao.dao.EditalDAO;
import br.com.leilao.dao.LanceDAO;
import br.com.leilao.filter.EditalFilter;
import br.com.leilao.model.Edital;
import br.com.leilao.model.Lance;
import br.com.leilao.util.DateUtil;

public class ThreadCalcularVencedor extends Thread{
	private Date ultimaExecucao;
	
   @Override
   public void run() {
	  try {
		calcularVencedores();  
		sleep(5*60*1000);
		run();
	} catch (Exception e) {
		e.printStackTrace();
	}
   }

	private void calcularVencedores() throws Exception {
		EditalDAO dao = new EditalDAO();
		ArrayList<Edital> editais = getEditaisAbertos();
		this.ultimaExecucao = DateUtil.getDataHoje();
		for (Edital edital : editais) {
			Lance ganhador = dao.getLanceVencedorEdital(edital.getIdEdital());
			
			if(ganhador !=null){
				dao.removerPerdedores(ganhador);
			}
		}
		
	}

	

	private ArrayList<Edital> getEditaisAbertos() throws Exception {
		EditalDAO dao = new EditalDAO();
		EditalFilter filtro = new EditalFilter();
		
		//filtro.setDataAbertura(ultimaExecucao);
		//filtro.setDataFechamento(DateUtil.getDataHoje());
		
		ArrayList<Edital> editais = dao.findAll(filtro);
		return editais;
	}
	
	
}